﻿<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>控制器的定义</title>
    <script type="text/javascript" src="../Content/highlighter/scripts/shCore.js"></script>
    <script type="text/javascript" src="../Content/highlighter/scripts/shBrushCSharp.js"></script>
    <script type="text/javascript" src="../Content/highlighter/scripts/shBrushXml.js"></script>
    <link type="text/css" rel="stylesheet" href="../Content/highlighter/styles/shCoreDefault.css"/>
    <script type="text/javascript">SyntaxHighlighter.all();</script>
</head>
<body>
    <h3>控制器的定义</h3>
    当安装完NFinal后,Controllers目录下会有一个IndexController.cs的控制器
    <pre class="brush: csharp;">
        using System;
        using System.Collections.Generic;
        using System.Web;
        using NFinal.Sign;

        namespace WebMvc.App.Controllers
        {
            public class IndexController: Controller
            {
                //可以添加属性,此属性只为提示用,表示返回的类型,本身不起任何作用.
                //当函数比较多的时候,添加此属性有助于提高代码的可读性.
                [Action(ResultType.Content)]
                public void Index()
                {
                    View("Index.aspx");
                }
            }
        }
    </pre>
    <pre>
    
    1.控制器必须写在Controllers目录下.
    2.命名空间采用默认的命名空间,类名必须以Controller类结尾.
    且该类必须继承自Controller类
    3.其函数返回值类型必须为void.可访问修饰符必须为public.
    其URL为http://localhost/模块名/IndexController/Index.htm
    </pre>
    例:
    1.在Controllers下新建SampleController.cs
    <pre class="brush: csharp;">
        using System;
        using System.Collections.Generic;
        using System.Web;
        //由于项目名和模块名不同,命名空间也会不同,复制该代码也是无法运行的.
        //必须手动添加该类,或是修改为正确的命名空间.
        namespace WebMvc.App.Controllers
        {
            public class SampleController:Controller
            {
                public void Show()
                {
                    Write("Hello World.");
                }
            }
        }
    </pre>
    2.右键点击WebCompiler.aspx.选择在浏览器中查看.
    <p>
        生成开始<br />生成结束
    </p>
    3.在Web层下的Default文件夹下会出现SampleController文件夹.
    右键点击该文件夹,选择包括在项目中,其中Show.cs的代码如下.
    <pre class="brush: csharp;">
        using System;
        using System.Collections.Generic;
        using System.Web;

        namespace WebMvc.App.Web.Default.SampleController
        {
            public class ShowAction  : Controller
	        {
		        public ShowAction(System.IO.TextWriter tw):base(tw){}
		        public ShowAction(string fileName) : base(fileName) {}
                public void Show()
                {
                    Write("Hello World.");
                }
            }
        }
    </pre>
    其中Show.html中的代码如下:
    <pre class="brush: html" type="text/template">
        &lt;!DOCTYPE html&gt;
        &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
        &lt;head&gt;
        &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt;
            &lt;title&lt;&lt;/title&lt;
        &lt;/head&gt;
        &lt;body&gt;
            &lt;script&gt;
                window.location.href = "/App/SampleController/Show.htm";
	        &lt;/script&gt;
        &lt;/body&gt;
        &lt;/html&gt;
    </pre>
    <p>
        show中的代码只是跳转并执行SampleController下的Show方法.
    </p>
    <p>
        4.右键点击并选择在浏览器中查看.可以看到浏览器输出Hello World.
    </p>
</body>
</html>